/*
 * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
/*
 * Copyright 2001, 2002,2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.sun.org.apache.xerces.internal.impl.dv;

import java.util.Vector;

import com.sun.org.apache.xerces.internal.xs.XSAnnotation;
import com.sun.org.apache.xerces.internal.xs.XSObjectList;
import com.sun.org.apache.xerces.internal.impl.xs.util.XSObjectListImpl;

/**
 * The class used to pass all facets to {@link XSSimpleType#applyFacets}.
 *
 * @author Sandy Gao, IBM
 * @xerces.internal
 */
public class XSFacets {

  /**
   * value of length facet.
   */
  public int length;

  /**
   * value of minLength facet.
   */
  public int minLength;

  /**
   * value of maxLength facet.
   */
  public int maxLength;

  /**
   * value of whiteSpace facet.
   */
  public short whiteSpace;

  /**
   * value of totalDigits facet.
   */
  public int totalDigits;

  /**
   * value of fractionDigits facet.
   */
  public int fractionDigits;

  /**
   * string containing value of pattern facet, for multiple patterns values
   * are ORed together.
   */
  public String pattern;

  /**
   * Vector containing values of Enumeration facet, as String's.
   */
  public Vector enumeration;

  /**
   * An array parallel to "Vector enumeration". It contains namespace context
   * of each enumeration value. Elements of this vector are NamespaceContext
   * objects.
   */
  public Vector enumNSDecls;

  /**
   * value of maxInclusive facet.
   */
  public String maxInclusive;

  /**
   * value of maxExclusive facet.
   */
  public String maxExclusive;

  /**
   * value of minInclusive facet.
   */
  public String minInclusive;

  /**
   * value of minExclusive facet.
   */
  public String minExclusive;


  public XSAnnotation lengthAnnotation;
  public XSAnnotation minLengthAnnotation;
  public XSAnnotation maxLengthAnnotation;
  public XSAnnotation whiteSpaceAnnotation;
  public XSAnnotation totalDigitsAnnotation;
  public XSAnnotation fractionDigitsAnnotation;
  public XSObjectListImpl patternAnnotations;
  public XSObjectList enumAnnotations;
  public XSAnnotation maxInclusiveAnnotation;
  public XSAnnotation maxExclusiveAnnotation;
  public XSAnnotation minInclusiveAnnotation;
  public XSAnnotation minExclusiveAnnotation;

  public void reset() {
    lengthAnnotation = null;
    minLengthAnnotation = null;
    maxLengthAnnotation = null;
    whiteSpaceAnnotation = null;
    totalDigitsAnnotation = null;
    fractionDigitsAnnotation = null;
    patternAnnotations = null;
    enumAnnotations = null;
    maxInclusiveAnnotation = null;
    maxExclusiveAnnotation = null;
    minInclusiveAnnotation = null;
    minExclusiveAnnotation = null;
  }
}
